package com.weiwu.weiwustore.controller;

import com.weiwu.weiwustore.pojo.NoticeListVo;
import com.weiwu.weiwustore.pojo.RestResponse;
import com.weiwu.weiwustore.pojo.UserP;
import com.weiwu.weiwustore.service.NoticeService;
import com.weiwu.weiwustore.utils.CrudUtil;
import com.weiwu.weiwustore.utils.Md5;
import com.weiwu.weiwustore.utils.ObjectFormatUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;


@RestController
public class NoticeController {
    @Autowired
    private NoticeService noticeService;

    /**
     * 获取公告列表 公告管理用
     *
     * @param map 分页数据和查询条件
     * @return 用户列表数据
     */
    @PostMapping("/notice/getnoticelist")
    public RestResponse getnoticelist(@RequestBody Map<String, Object> map) {
        List<NoticeListVo> res = noticeService.getnoticelist(map);
        Integer count = resCount(map);
        if (count == 0) {
            count = res.size();
        }
        return new RestResponse(res, count, 200);
    }

    /**
     * 用户管理模块 编辑新增用户信息
     * @param map 用户信息
     * @return 是否成功
     */
    @PostMapping("/notice/addnotices")
    public RestResponse addnotices(@RequestBody Map<String, Object> map) {
        //判断必要参数是否满足
        if (String.valueOf(map.get("title")) == null || String.valueOf(map.get("content")) == null) {
            return CrudUtil.ID_MISS_RESPONSE;
        }
        return CrudUtil.postHandle(noticeService.insertNotice(map), 1);
    }

    /**
     * 公告管理模块 删除公告信息
     * @param map 用户信息
     * @return 是否成功
     */
    @DeleteMapping("/notice/deletenotice")
    public RestResponse deletenotice(@RequestBody Map<String, Object> map) {
        return CrudUtil.postHandle(noticeService.deleteNoticeById(ObjectFormatUtil.toInteger(map.get("id"))), 1);
    }

    /**
     * 更新公告的信息
     * @param map 标题，内容，id
     * @return 修改是否成功
     */
    @PostMapping("/notice/savenotice")
    public RestResponse update(@RequestBody Map<String, Object> map) {
        return CrudUtil.postHandle(noticeService.update(map), 1);
    }

    /**
     * 根据仓库id查询系统公告 首页用
     * @param map
     * @return
     */
    @PostMapping("/notice/getnotices")
    public RestResponse getnotices(@RequestBody Map<String,Object> map){
        // 判断必要参数是否满足
        if(!CheckParames(map))
            return CrudUtil.ID_MISS_RESPONSE;
        return new RestResponse(noticeService.findNoticeByCondition(map));
    }
    private boolean CheckParames(Map<String,Object> map){
        if (String.valueOf(map.get("id")) == null || String.valueOf(map.get("storeid")) == null) {
            return false;
        }
        return true;
    }

    /**
     * 返回搜索查询返回的数据总数  如果默认查询全部则返回数据库内总数
     *
     * @param map 查询条件
     * @return 要么返回默认查询全部的数据总数  要么返回0 后续返回数据组的长度
     */
    private Integer resCount(Map<String, Object> map) {
        Integer count = 0;
        if (!map.containsKey("select")) {
            if (!map.containsKey("select")) {
                count = noticeService.findCount();
            }
        }
        return count;
    }
}
